Data Flow Architecture
Overview
The media stack operates as a fully automated pipeline:
Request → Index → Download → Import → Library
Each stage is handled by a dedicated service to ensure separation of concerns and predictable media handling.
Flow Steps
1. Request (optional)
Via Jellyseerr → sends to Radarr/Sonarr
2. Indexing
Prowlarr syncs indexers:
docker exec -it prowlarr curl http://localhost:9696
Prowlarr synchronizes indexers to Radarr and Sonarr automatically.
3. Download
Downloads are handled by:
- qBittorrent
Radarr/Sonarr send torrents via API using category-based routing:
- movies
- series
Check active downloads:
docker exec -it qbittorrent qbittorrent-nox
(or via Web UI: http://localhost:8080)
4. Import validation
Radarr and Sonarr monitor completed downloads and import them into the correct library structure.
Radarr/Sonarr scanning:
docker exec -it radarr ls /data/downloads/movies
5. Final library check
After import, media is stored in the final library locations:
ls -la /mnt/BonusDisk/JellyfinMedia/Streaming/movies ls -la /mnt/BonusDisk/JellyfinMedia/Streaming/series
These folders are consumed by the media server (e.g. Jellyfin).
Debug commands
Check container networking
docker network ls
Test internal service resolution
docker exec -it radarr ping sonarr
Summary
This architecture ensures:
- Fully automated media acquisition
- Clear separation between download and library layers
- Centralized indexer management via Prowlarr
- Deterministic routing through Radarr and Sonarr
- Stable storage structure for long-term media hosting
